/**
 * 船舶相关API接口
 */

import request from '../utils/request.js'

export const shipApi = {
  /**
   * 获取用户船舶列表
   * @param {Object} params - 查询参数
   * @param {string} params.status - 船舶状态
   * @param {string} params.keyword - 搜索关键词
   */
  getShipList(params = {}) {
    return request.get('/ships', params)
  },

  /**
   * 获取船舶详情
   * @param {string} shipId - 船舶ID
   */
  getShipDetail(shipId) {
    return request.get(`/ships/${shipId}`)
  },

  /**
   * 添加船舶信息
   * @param {Object} data - 船舶数据
   * @param {string} data.name - 船舶名称
   * @param {string} data.imo - IMO编号
   * @param {string} data.type - 船舶类型
   * @param {number} data.length - 船舶长度
   * @param {number} data.width - 船舶宽度
   * @param {number} data.tonnage - 载重吨位
   * @param {string} data.flag - 船旗国
   * @param {string} data.company - 船舶公司
   */
  addShip(data) {
    return request.post('/ships', data)
  },

  /**
   * 更新船舶信息
   * @param {string} shipId - 船舶ID
   * @param {Object} data - 更新数据
   */
  updateShip(shipId, data) {
    return request.put(`/ships/${shipId}`, data)
  },

  /**
   * 删除船舶
   * @param {string} shipId - 船舶ID
   */
  deleteShip(shipId) {
    return request.delete(`/ships/${shipId}`)
  },

  /**
   * 设置默认船舶
   * @param {string} shipId - 船舶ID
   */
  setDefaultShip(shipId) {
    return request.post('/ships/set-default', { shipId })
  },

  /**
   * 获取默认船舶
   */
  getDefaultShip() {
    return request.get('/ships/default')
  },

  /**
   * 验证船舶信息
   * @param {Object} data - 验证数据
   * @param {string} data.imo - IMO编号
   * @param {string} data.name - 船舶名称
   */
  verifyShip(data) {
    return request.post('/ships/verify', data)
  },

  /**
   * 获取船舶类型列表
   */
  getShipTypes() {
    return request.get('/ships/types')
  },

  /**
   * 获取船旗国列表
   */
  getFlagStates() {
    return request.get('/ships/flag-states')
  },

  /**
   * 搜索船舶
   * @param {string} keyword - 搜索关键词
   * @param {Object} params - 其他参数
   */
  searchShips(keyword, params = {}) {
    return request.get('/ships/search', { keyword, ...params })
  },

  /**
   * 获取船舶航行记录
   * @param {string} shipId - 船舶ID
   * @param {Object} params - 查询参数
   */
  getShipVoyages(shipId, params = {}) {
    return request.get(`/ships/${shipId}/voyages`, params)
  },

  /**
   * 添加航行记录
   * @param {string} shipId - 船舶ID
   * @param {Object} data - 航行数据
   * @param {string} data.departurePort - 出发港口
   * @param {string} data.arrivalPort - 到达港口
   * @param {string} data.departureTime - 出发时间
   * @param {string} data.arrivalTime - 到达时间
   * @param {string} data.cargo - 货物信息
   */
  addVoyage(shipId, data) {
    return request.post(`/ships/${shipId}/voyages`, data)
  },

  /**
   * 更新航行记录
   * @param {string} shipId - 船舶ID
   * @param {string} voyageId - 航行ID
   * @param {Object} data - 更新数据
   */
  updateVoyage(shipId, voyageId, data) {
    return request.put(`/ships/${shipId}/voyages/${voyageId}`, data)
  },

  /**
   * 获取船舶证书列表
   * @param {string} shipId - 船舶ID
   */
  getShipCertificates(shipId) {
    return request.get(`/ships/${shipId}/certificates`)
  },

  /**
   * 添加船舶证书
   * @param {string} shipId - 船舶ID
   * @param {Object} data - 证书数据
   * @param {string} data.type - 证书类型
   * @param {string} data.number - 证书编号
   * @param {string} data.issueDate - 颁发日期
   * @param {string} data.expiryDate - 到期日期
   * @param {string} data.authority - 颁发机构
   */
  addCertificate(shipId, data) {
    return request.post(`/ships/${shipId}/certificates`, data)
  },

  /**
   * 更新船舶证书
   * @param {string} shipId - 船舶ID
   * @param {string} certificateId - 证书ID
   * @param {Object} data - 更新数据
   */
  updateCertificate(shipId, certificateId, data) {
    return request.put(`/ships/${shipId}/certificates/${certificateId}`, data)
  },

  /**
   * 删除船舶证书
   * @param {string} shipId - 船舶ID
   * @param {string} certificateId - 证书ID
   */
  deleteCertificate(shipId, certificateId) {
    return request.delete(`/ships/${shipId}/certificates/${certificateId}`)
  },

  /**
   * 获取船舶位置信息
   * @param {string} shipId - 船舶ID
   */
  getShipPosition(shipId) {
    return request.get(`/ships/${shipId}/position`)
  },

  /**
   * 更新船舶位置
   * @param {string} shipId - 船舶ID
   * @param {Object} data - 位置数据
   * @param {number} data.latitude - 纬度
   * @param {number} data.longitude - 经度
   * @param {string} data.course - 航向
   * @param {number} data.speed - 航速
   */
  updateShipPosition(shipId, data) {
    return request.put(`/ships/${shipId}/position`, data)
  },

  /**
   * 获取船舶成员列表
   * @param {string} shipId - 船舶ID
   */
  getShipCrew(shipId) {
    return request.get(`/ships/${shipId}/crew`)
  },

  /**
   * 邀请成员加入船舶
   * @param {string} shipId - 船舶ID
   * @param {Object} data - 邀请数据
   * @param {string} data.userId - 用户ID
   * @param {string} data.role - 角色
   * @param {string} data.message - 邀请消息
   */
  inviteCrew(shipId, data) {
    return request.post(`/ships/${shipId}/crew/invite`, data)
  },

  /**
   * 移除船舶成员
   * @param {string} shipId - 船舶ID
   * @param {string} crewId - 成员ID
   */
  removeCrewMember(shipId, crewId) {
    return request.delete(`/ships/${shipId}/crew/${crewId}`)
  },

  /**
   * 设置成员角色
   * @param {string} shipId - 船舶ID
   * @param {string} crewId - 成员ID
   * @param {string} role - 新角色
   */
  setCrewRole(shipId, crewId, role) {
    return request.put(`/ships/${shipId}/crew/${crewId}/role`, { role })
  }
}

export default shipApi